package com.lezijie.seckill.utils;

import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.stereotype.Component;

/**
 * MD5加密工具类
 * @author 孙志鹏
 * @createDate 2021-10-21 18:47
 */
@Component
public class MD5Util {

    /**
     * 加密盐值
     */
    private static final String SALT="1a2b3c4d";

    /**
     * 使用apache加密方式，加密MD5
     * @param src 需要加密的值
     * @return 返回MD5加密字符串
     */
    public static String md5(String src) {
        return DigestUtils.md5Hex(src);
    }

    /**
     * 第一次加密
     * @param inputPass 用户输入的密码
     * @return 返回MD5加密字符串
     */
    public static String inputPassToFormPass(String inputPass) {
        String src = "" + SALT.charAt(0) + SALT.charAt(2) + inputPass + SALT.charAt(5) + SALT.charAt(4);
        return md5(src);
    }

    /**
     * 存储到数据库中进行加密
     * @param formPass 被加密字符串
     * @param salt 存储到数据库中的盐值
     * @return 存储到数据库的加密字符串
     */
    public static String formPassToDbPass(String formPass, String salt) {
        String str = "" + salt.charAt(0) + salt.charAt(2) + formPass + salt.charAt(5) + salt.charAt(4);
        return md5(str);
    }

    /**
     * 对外调用的加密方法
     * @param inputPass 需要加密的字符串
     * @param salt      传入的盐值
     * @return 存储到数据库的加密字符串
     */
    public static String inputPassToDbPass(String inputPass, String salt) {
        String fromPass = inputPassToFormPass(inputPass);
        return formPassToDbPass(fromPass, salt);
    }


    public static void main(String[] args) {
        System.out.println(inputPassToFormPass("123456"));
        System.out.println(formPassToDbPass("d3b1294a61a07da9b49b6e22b2cbd7f9","1a2b3c4d"));
        System.out.println(inputPassToDbPass("123456","1a2b3c4d"));
    }

}
